<

FloatingActionButton と ThemeData のアクセント プロパティ

まとめ

Flutter を削除しましたFloatingActionButton(FAB) 依存関係ThemeDataアクセントのプロパティ。

コンテクスト

これはほんの一部でしたが、マテリアルテーマシステムアップデート計画。

以前は、ThemeData accentIconTheme財産はただだった によって使われたFloatingActionButtonデフォルトを決定する ボタン内に表示されるテキストまたはアイコンの色。

FloatingActionButtonも使用しましたThemeData accentTextTheme財産、 ただし、この依存関係は文書化されておらず、不必要でした。

これらの依存関係はどちらも混乱を招くものでした。 たとえば、ThemeaccentIconThemeすべてのフローティング アクション ボタンの外観を変更するには、 他のどのコンポーネントが影響を受けるかを知ることは困難でした。 または将来的に影響を受ける可能性があります。

のマテリアルデザイン仕様「アクセント」カラーは含まれなくなりました。 のColorSchemeの二次色が代わりに使用されるようになりました。

以前は、アプリケーションはテキストとアイコンの色を設定できました 内部FloatingActionButtonsウィジェットを使ってforegroundColorプロパティ、またはFloatingActionButtonThemeforegroundColor。 どちらでもない場合foregroundColorプロパティが指定された、前景 デフォルトの色accentIconThemeの色。

この変更により、デフォルトの動作ではカラースキームが使用されます。onSecondary代わりに色を付けます。

変更内容の説明

以前は、accentIconThemeのデフォルトを提供しましたFloatingActionButtonforegroundColor財産:

    final Color foregroundColor = this.foregroundColor
      ?? floatingActionButtonTheme.foregroundColor
      ?? theme.accentIconTheme.color // To be removed.
      ?? theme.colorScheme.onSecondary;

テーマを設定するアプリaccentIconThemeを効果的に設定するにはforegroundColor全部の フローティングアクションボタンは、同じ効果を得ることができます を構成するforegroundColor彼らのテーマのfloatingActionButtonTheme

FloatingActionButtonforegroundColor現在使用されています を設定するにはtextStyleRawMaterialButtonによって作成されたFloatingActionButton。以前、 このテキスト スタイルは、次のボタン スタイルに基づいています。ThemeData.accentTextTheme:

// theme.accentTextTheme becomes theme.textTheme
final TextStyle textStyle = theme.accentTextTheme.button.copyWith(
  color: foregroundColor,
  letterSpacing: 1.2,
);

アプリが明示的に設定している場合を除きます。accentTextThemeこの文書化されていない依存関係を利用するには、 この使用法accentTextThemeは不要です。 この変更により、この使用法が置き換えられます。accentTextThemetextTheme

移行ガイド

この変更は次の 2 つのステップで発生しました。

  1. の前景の場合、FloatingActionButton設定されています デフォルト以外の色に変更すると、警告が出力されるようになりました。
  2. accentIconTheme依存関係が削除されました。 まだ移行していない場合は、アプリを移行します 以下のパターンの通り。

設定するには、FloatingActionButtonforegroundColorすべての FAB について、テーマの設定を行うことができます。floatingActionButtonThemeその代わりにaccentIconTheme

移行前のコード:

MaterialApp(
  theme: ThemeData(
    accentIconTheme: IconThemeData(color: Colors.red),
  ),
)

移行後のコード:

MaterialApp(
  theme: ThemeData(
    floatingActionButtonTheme: FloatingActionButtonThemeData(
      foregroundColor: Colors.red,
    ),
  ),
)

タイムライン

リリースされたバージョン: 1.16.3
安定版リリース: 1.17

参考文献

設計ドキュメント:

API ドキュメント:

  • FloatingActionButton
  • ThemeData
  • FloatingActionButtonThemeData

関連する PR:

  • ステップ 1/2Flutter について警告する ThemeData アクセント プロパティに対する FloatingActionButton の依存関係
  • ステップ 2/2Flutter の FloatingActionButton 依存関係を削除する ThemeData アクセント プロパティについて

他の: